package com.juzi.fenzhi_switch;

public class SwitchDemo1 {
    public static void main(String[] args) {
        System.out.println("================================\n" +
                "switch分支\n" +
                " 也是匹配条件去执行分支, 适合做值匹配的分支选择，结构清晰，格式良好\n" +
                "---------------------------\n" +
                "switch分支的格式\n" +
                " switch(表达式){\n    " +
                " case 值1:\n        " +
                " 执行代码...;\n        " +
                " break;\n    " +
                " case 值2:\n        " +
                " 执行代码...;\n        " +
                " break;\n" +
                "     … \n    " +
                " case 值n-1:\n        " +
                " 执行代码...;\n        " +
                " break;\n    " +
                " default:\n        " +
                " 执行代码n;\n" +
                " }\n" +
                "---------------------------\n" +
                "执行流程：\n" +
                " 1、先执行表达式的值，拿着这个值去与case后的值进行匹配。\n" +
                " 2、匹配哪个case的值为true就执行哪个case，遇到break就跳出switch分支。\n" +
                " 3、如果case后的值都不匹配则执行default代码。\n" +
                "---------------------------\n" +
                "if、switch分支各自适合做什么业务场景？\n" +
                " 1、if其实在功能上远远强大于switch。\n" +
                " 2、if适合做区间匹配。\n" +
                " 3、switch适合做：值匹配的分支选择、代码优雅。\n" +
                "---------------------------\n" +
                "switch分支注意事项：\n" +
                " 1、表达式类型只能是byte、short、int、char，JDK5开始支持枚举，JDK7开始支持String、不支持double、float、long。\n" +
                " 2、case给出的值不允许重复，且只能是字面量，不能是变量。\n" +
                " 3、不要忘记写break，否则会出现穿透现象。\n" +
                "---------------------------\n" +
                "switch的穿透性\n" +
                " 如果代码执行到没有写break的case块，执行完后将直接进入下一个case块执行代码（而且不会进行任何匹配），直到遇到break才跳出分支，这就是switch的穿透性。\n" +
                "---------------------------\n" +
                "1、什么情况下会出现switch穿透现象?\n" +
                "   case中没有写break。\n" +
                "2、switch穿透性能解决什么问题？\n" +
                "   存在多个case分支的功能代码是一样时，可以用穿透性把流程集中到同一处处理，这样可以简化代码。\n");
    }
}
